# -*- coding:utf-8 -*-
"""
@Time:  2024/5/10 9:46
@Auth:  Mrs.Gou 
@Function:  九九乘法表
"""

# 分析：九九乘法表如果全部补齐则是一个矩形
# 每一行可以认为是x*y=xy的公式，而一行中y从1-9循环;多行则是x从1-9循环，所以我们可以使用循环嵌套实现矩形九九乘法表打印。
# y从1开始
# y = 1
# # y从1-9循环
# while y < 10:
#     # x也从1开始
#     x = 1
#     # 每一个y，x都从1-9循环
#     while x < 10:
#         # 输出x*y，并以： end='\t'  tab来结束
#         print(str(x) + '*' + str(y) + '=' + str(x * y), end='\t')
#         x += 1
#     # 每一行换行: 默认print('',end='\n')
#     print()
#     y += 1

# 一般来说，确定次数的，都可以用for
# 次数不固定的，可以用while，更灵活，是用break结束
# while可以自行随意改变控制条件的变化数
# 正常来说，while和for都可以实现各类循环，关键要看怎么写更方便简单

# 利用分支来判断哪些要输出，哪些不要输出
# 发现x<y的需要输出
# y = 1
# while y < 10:
#     x = 1
#     while x < 10:
#         # if时： 预设数据的处理逻辑，运行时，根据数据的选择相应的执行路径执行
#         if x <= y:
#             print(str(x) + '*' + str(y) + '=' + str(x * y), end='\t')
#         x += 1
#     print()
#     y += 1

# 精简写法，提升效率
# y = 1
# while y < 10:
#     x = 1
#     while x <= y:
#         print(str(x) + '*' + str(y) + '=' + str(x * y), end='\t')
#         x += 1
#     print()
#     y += 1

# for循环实现九九乘法口诀
# for y in range(1, 10, 1):
#     for x in range(1, 10, 1):
#         if x <= y:
#             print(str(x) + 'x' + str(y) + '=' + str(x * y), end='\t')
#     print()

# 九九乘法表去掉两条对角线
for y in range(1, 10, 1):
    for x in range(1, 10, 1):
        # 两条对角线的条件
        if (x == y) or (x + y == 10):
            print('\t', end='\t')
        else:
            print(str(y) + 'x' + str(x) + '=' + str(x * y), end='\t')
    print()

# 分支语句习题1
# 用户名和密码都是字符串，长度为6-16位，如何判断一个用户名和密码长度是否合法？
# print('用户名和密码都是字符串，长度为6-16位，如何判断一个用户名和密码长度是否合法？')
# # 判断字符串长度的函数：len()
# loginname = input("请在此输入用户名：")
# password = input("请在此输入密码：")
# # 如果变量可能存在空的情况
# if (6 <= len(loginname) <= 16) and (6 <= len(password) <= 16):
#     print('用户名密码合法')
# else:
#     print('用户名密码非法')
#
# print()

# 四舍五入保留2位小数
# print('# 四舍五入保留两位小数')
# f = 100.88888888
# print(round(f, 2))
# print()
#
# f = int(f * 100) / 100
# print(f)
